package com.ssy.lingxi.contract.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.contract.entity.ApplyAmountOrderDetailDO;
import com.ssy.lingxi.contract.model.vo.applyamount.request.ApplyAmountOrderDetailPageVO;
import com.ssy.lingxi.contract.model.vo.applyamount.request.ApplyAmountOrderSaveDetailVO;
import com.ssy.lingxi.contract.model.vo.applyamount.response.ApplyAmountOrderDetailQueryVO;
import com.ssy.lingxi.contract.model.vo.applyamount.response.ApplyAmountOrderDetailVO;
import com.ssy.lingxi.contract.model.vo.execute.request.ContractExecutePayDetailVO;

import java.util.List;

/**
 * 请款单明细接口定义
 * @author 伍将
 * @date 2021/3/10
 * @version 2.0.0
 */
public interface IApplyAmountOrderDetailService {

    /**
     * 分页查询请款单明细
     * @author 伍将
     * @date 2021/3/10
     * @param pageVO: 分页请求参数
     * @return 操作结果
     **/
    Wrapper<PageData<ApplyAmountOrderDetailQueryVO>> pageList(ApplyAmountOrderDetailPageVO pageVO);

    /**
     * 删除请款单明细
     * @author 伍将
     * @date 2021/3/10
     * @param applyId: 请款单id
     * @return 操作结果
     **/
    Wrapper<Void> delete(Long applyId);

    /**
     * 保存请款明细
     * @author 伍将
     * @date 2021/3/11
     * @param detailList:
     * @param contractId:
     * @param applyId:
     * @param payPlanId:
     * @return
     **/
    Wrapper<Void> save(List<ApplyAmountOrderSaveDetailVO> detailList, Long contractId, Long applyId, Long payPlanId);

    /**
     * 合同执行-合同执行详情-（订单）付款明细[采购商用]
     * @param sysUser
     * @param detailVO
     * @return
     */
    Wrapper<List<ApplyAmountOrderDetailVO>> payDetailList(UserLoginCacheDTO sysUser, ContractExecutePayDetailVO detailVO);

    /**
     * 批量保存请款单明细.
     * @param applyAmountOrderSaveDetailVOS
     */
    void saveList(List<ApplyAmountOrderDetailDO> applyAmountOrderSaveDetailVOS);
}
